package com.atde._04_structural_design_patterns.proxy.staticproxy;


/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._04_structural_design_patterns.proxy.staticproxy
 * @Author: Del
 * @CreateTime: 2025-06-23  20:23
 * @Description: 静态代理模式的客户端测试类，用于演示TeacherDao 接口的实现类 TeacherDaoImpl
 *  通过代理类 TeacherDaoProxy 在执行 teach() 方法前后进行功能增强
 *
 *  静态代理优缺点
 *  1. 优点：在不修改目标对象的功能前提下，能通过代理对象对目标功能扩展
 *  2. 缺点：因为代理对象需要与目标对象实现一样的接口，所以会有很多代理类
 *  3. 一旦接口增加方法，目标对象与代理对象都要维护
 * @Version: 1.0
 */
public class Client {
    public static void main(String[] args) {
        // 创建代理对象，并且将被代理对象传递给代理对象
        TeacherDaoProxy teacherDaoProxy = new TeacherDaoProxy(new TeacherDaoImpl());
        // 实际调用代理对象的方法，实现对真实对象的调用
        teacherDaoProxy.teach();
    }
}
